{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import os\n",
    "import sys\n",
    "data_folder = os.path.join(os.path.expanduser(\"~\"), \"data/datasets\", \"books\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def clean_book(document):\n",
    "    lines = document.split(\"\\n\")\n",
    "    start= 0\n",
    "    end = len(lines)\n",
    "    for i in range(len(lines)):\n",
    "        line = lines[i]\n",
    "        if line.startswith(\"*** START OF THIS PROJECT GUTENBERG\"):\n",
    "            start = i + 1\n",
    "        elif line.startswith(\"*** END OF THIS PROJECT GUTENBERG\"):\n",
    "            end = i - 1\n",
    "    return \"\\n\".join(lines[start:end])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "def load_books_data(folder=data_folder):\n",
    "    documents = []\n",
    "    authors = []\n",
    "    subfolders = [subfolder for subfolder in os.listdir(folder)\n",
    "                  if os.path.isdir(os.path.join(folder, subfolder))]\n",
    "    for author_number, subfolder in enumerate(subfolders):\n",
    "        full_subfolder_path = os.path.join(folder, subfolder)\n",
    "        for document_name in os.listdir(full_subfolder_path):\n",
    "            with open(os.path.join(full_subfolder_path, document_name)) as inf:\n",
    "                documents.append(clean_book(inf.read()))\n",
    "                authors.append(author_number)\n",
    "    return documents, np.array(authors, dtype='int')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "documents, classes = load_books_data(data_folder)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "function_words = [\"a\", \"able\", \"aboard\", \"about\", \"above\", \"absent\",\n",
    "                  \"according\" , \"accordingly\", \"across\", \"after\", \"against\",\n",
    "                  \"ahead\", \"albeit\", \"all\", \"along\", \"alongside\", \"although\",\n",
    "                  \"am\", \"amid\", \"amidst\", \"among\", \"amongst\", \"amount\", \"an\",\n",
    "                    \"and\", \"another\", \"anti\", \"any\", \"anybody\", \"anyone\",\n",
    "                    \"anything\", \"are\", \"around\", \"as\", \"aside\", \"astraddle\",\n",
    "                    \"astride\", \"at\", \"away\", \"bar\", \"barring\", \"be\", \"because\",\n",
    "                    \"been\", \"before\", \"behind\", \"being\", \"below\", \"beneath\",\n",
    "                    \"beside\", \"besides\", \"better\", \"between\", \"beyond\", \"bit\",\n",
    "                    \"both\", \"but\", \"by\", \"can\", \"certain\", \"circa\", \"close\",\n",
    "                    \"concerning\", \"consequently\", \"considering\", \"could\",\n",
    "                    \"couple\", \"dare\", \"deal\", \"despite\", \"down\", \"due\", \"during\",\n",
    "                    \"each\", \"eight\", \"eighth\", \"either\", \"enough\", \"every\",\n",
    "                    \"everybody\", \"everyone\", \"everything\", \"except\", \"excepting\",\n",
    "                    \"excluding\", \"failing\", \"few\", \"fewer\", \"fifth\", \"first\",\n",
    "                    \"five\", \"following\", \"for\", \"four\", \"fourth\", \"from\", \"front\",\n",
    "                    \"given\", \"good\", \"great\", \"had\", \"half\", \"have\", \"he\",\n",
    "                    \"heaps\", \"hence\", \"her\", \"hers\", \"herself\", \"him\", \"himself\",\n",
    "                    \"his\", \"however\", \"i\", \"if\", \"in\", \"including\", \"inside\",\n",
    "                    \"instead\", \"into\", \"is\", \"it\", \"its\", \"itself\", \"keeping\",\n",
    "                    \"lack\", \"less\", \"like\", \"little\", \"loads\", \"lots\", \"majority\",\n",
    "                    \"many\", \"masses\", \"may\", \"me\", \"might\", \"mine\", \"minority\",\n",
    "                    \"minus\", \"more\", \"most\", \"much\", \"must\", \"my\", \"myself\",\n",
    "                    \"near\", \"need\", \"neither\", \"nevertheless\", \"next\", \"nine\",\n",
    "                    \"ninth\", \"no\", \"nobody\", \"none\", \"nor\", \"nothing\",\n",
    "                    \"notwithstanding\", \"number\", \"numbers\", \"of\", \"off\", \"on\",\n",
    "                    \"once\", \"one\", \"onto\", \"opposite\", \"or\", \"other\", \"ought\",\n",
    "                    \"our\", \"ours\", \"ourselves\", \"out\", \"outside\", \"over\", \"part\",\n",
    "                    \"past\", \"pending\", \"per\", \"pertaining\", \"place\", \"plenty\",\n",
    "                    \"plethora\", \"plus\", \"quantities\", \"quantity\", \"quarter\",\n",
    "                    \"regarding\", \"remainder\", \"respecting\", \"rest\", \"round\",\n",
    "                    \"save\", \"saving\", \"second\", \"seven\", \"seventh\", \"several\",\n",
    "                    \"shall\", \"she\", \"should\", \"similar\", \"since\", \"six\", \"sixth\",\n",
    "                    \"so\", \"some\", \"somebody\", \"someone\", \"something\", \"spite\",\n",
    "                    \"such\", \"ten\", \"tenth\", \"than\", \"thanks\", \"that\", \"the\",\n",
    "                    \"their\", \"theirs\", \"them\", \"themselves\", \"then\", \"thence\",\n",
    "                  \"therefore\", \"these\", \"they\", \"third\", \"this\", \"those\",\n",
    "\"though\", \"three\", \"through\", \"throughout\", \"thru\", \"thus\",\n",
    "\"till\", \"time\", \"to\", \"tons\", \"top\", \"toward\", \"towards\",\n",
    "\"two\", \"under\", \"underneath\", \"unless\", \"unlike\", \"until\",\n",
    "\"unto\", \"up\", \"upon\", \"us\", \"used\", \"various\", \"versus\",\n",
    "\"via\", \"view\", \"wanting\", \"was\", \"we\", \"were\", \"what\",\n",
    "\"whatever\", \"when\", \"whenever\", \"where\", \"whereas\",\n",
    "\"wherever\", \"whether\", \"which\", \"whichever\", \"while\",\n",
    "                  \"whilst\", \"who\", \"whoever\", \"whole\", \"whom\", \"whomever\",\n",
    "\"whose\", \"will\", \"with\", \"within\", \"without\", \"would\", \"yet\",\n",
    "\"you\", \"your\", \"yours\", \"yourself\", \"yourselves\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "from sklearn.feature_extraction.text import CountVectorizer\n",
    "extractor = CountVectorizer(vocabulary=function_words)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/robert/Programs/anaconda3/lib/python3.5/site-packages/sklearn/cross_validation.py:44: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n",
      "  \"This module will be removed in 0.20.\", DeprecationWarning)\n",
      "/home/robert/Programs/anaconda3/lib/python3.5/site-packages/sklearn/grid_search.py:43: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. This module will be removed in 0.20.\n",
      "  DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.svm import SVC\n",
    "from sklearn.model_selection import cross_val_score\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn import grid_search"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "parameters = {'kernel':('linear', 'rbf'), 'C':[1, 10]}\n",
    "svr = SVC()\n",
    "grid = grid_search.GridSearchCV(svr, parameters)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "pipeline1 = Pipeline([('feature_extraction', extractor),\n",
    "                      ('clf', grid)\n",
    "                     ])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "scores = cross_val_score(pipeline1, documents, classes, scoring='f1_macro')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.752205983608\n"
     ]
    }
   ],
   "source": [
    "print(np.mean(scores))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/robert/Programs/anaconda3/lib/python3.5/site-packages/sklearn/metrics/classification.py:1113: UndefinedMetricWarning: F-score is ill-defined and being set to 0.0 in labels with no predicted samples.\n",
      "  'precision', 'predicted', average, warn_for)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Score: 0.760\n"
     ]
    }
   ],
   "source": [
    "pipeline = Pipeline([('feature_extraction', CountVectorizer(analyzer='char', ngram_range=(3, 3))),\n",
    "                     ('classifier', grid)\n",
    "                    ])\n",
    "scores = cross_val_score(pipeline, documents, classes, scoring='f1_macro')\n",
    "print(\"Score: {:.3f}\".format(np.mean(scores)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "enron_data_folder = os.path.join(os.path.expanduser(\"~\"), \"data/datasets\", \"enron_mail_20150507\", \"maildir\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from email.parser import Parser\n",
    "p = Parser()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.utils import check_random_state"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def get_enron_corpus(num_authors=10, data_folder=enron_data_folder,\n",
    "                     min_docs_author=10, max_docs_author=100,\n",
    "                     random_state=None):\n",
    "    random_state = check_random_state(random_state)\n",
    "    email_addresses = sorted(os.listdir(data_folder))\n",
    "    random_state.shuffle(email_addresses)\n",
    "    documents = []\n",
    "    classes = []\n",
    "    author_num = 0\n",
    "    authors = {}\n",
    "    for user in email_addresses:\n",
    "        users_email_folder = os.path.join(data_folder, user)\n",
    "        mail_folders = [os.path.join(users_email_folder, subfolder)\n",
    "                        for subfolder in os.listdir(users_email_folder)\n",
    "                        if \"sent\" in subfolder]\n",
    "        try:\n",
    "            authored_emails = [open(os.path.join(mail_folder, email_filename), encoding='cp1252').read()\n",
    "                               for mail_folder in mail_folders\n",
    "                               for email_filename in os.listdir(mail_folder)]\n",
    "        except IsADirectoryError:\n",
    "            continue\n",
    "        if len(authored_emails) < min_docs_author:\n",
    "            continue\n",
    "        if len(authored_emails) > max_docs_author:\n",
    "            authored_emails = authored_emails[:max_docs_author]\n",
    "        contents = [p.parsestr(email)._payload for email in authored_emails]\n",
    "        documents.extend(contents)\n",
    "        classes.extend([author_num] * len(authored_emails))\n",
    "        authors[user] = author_num\n",
    "        author_num += 1\n",
    "        if author_num >= num_authors or author_num >= len(email_addresses):\n",
    "            break\n",
    "    return documents, np.array(classes), authors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "documents, classes, authors = get_enron_corpus(data_folder=enron_data_folder, random_state=14)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(953, 953)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(documents), len(classes)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'I would like to be on the panel but I have on a conflict on the conference \\ndates.  Please keep me in mind for next year.  \\n\\nMark Haedicke'"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "documents[100]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Score: 0.683\n"
     ]
    }
   ],
   "source": [
    "scores = cross_val_score(pipeline, documents, classes, scoring='f1_macro')\n",
    "print(\"Score: {:.3f}\".format(np.mean(scores)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.cross_validation import train_test_split\n",
    "training_documents, testing_documents, y_train, y_test = train_test_split(documents, classes, random_state=14)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "pipeline.fit(training_documents, y_train)\n",
    "y_pred = pipeline.predict(testing_documents)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'C': 1, 'kernel': 'linear'}\n"
     ]
    }
   ],
   "source": [
    "print(pipeline.named_steps['classifier'].best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "cm = confusion_matrix(y_pred, y_test)\n",
    "cm = cm / cm.astype(np.float).sum(axis=1)\n",
    "sorted_authors = sorted(authors.keys(), key=lambda x:authors[x])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nn3Z2VX33WHhiVb2mqs4ZbeleVfWGUY83Ln3ma8bfxqaqesHS8strGhl94Wh7t1/ty1XVg6rq01V1\nQZKH7vhfHxvcyv72kKrafMJZVbcdbeiBtTRaZLTHkxc/rrbh9fphdm9VtV9VvW/sWy8Zx4SHj/3j\n+eN473tH2Q9V1e+P5Z+sqruMY8LLqupFo8yBo59a7osXxwHrbfcVVXVekl+tqluP/vQTVfWiFccC\nzxz96MWLfnR85meq6s01jTj5wRXf8QZV9bLRvi+uqqdeP79d5jTa0UU1nRO9dBwLXFxVTxzvbx6h\nVGuct1TVY5aW/2FV1Vj+tap6eVV9PMmR69ThrmNdx5R7kJqOPT9TVWdU1dtrmgFnZT+3eYTIaCef\nGG3lpVtrl7nm8e6Nq+o+VfWepTrcv6revUrdjquq91TVqVX1+ap6alX9xviMs6vq5tfH74iNa5V9\n6uvHfnu185eXjGOHc6vq1mP5iaO/PH9s56h1Pu6xteX44647+7ux66lrXvdc7N8/MNrYR2qcOy+1\nvXOSvGT0s39c02xNf1xLI9+rav/acr3z4qr6mcVHjve/a/SJD16lTtdphB+7hlX6wmNrlWuMY/9+\neFUdn2TfsT99S205JzpxtOG3VtX9quqs8fNdxvr71XTt6NyazuWPHss/UlWHLdXnzKo6dJ3yx1XV\ne6vq9CR/vcr30W4jrGMnqunC8SOSHJbkqCR3zXQHSI/3907yJ0me1t13THL/JP+1tP4xSX4zyYO7\n+0tJnpfkgd19pyQ/PYo9NclV3X1Ykp9L8uaqutF47w5JHj4+/5FV9QOrVPOXkvxBdx+e5C5J/u8O\n+vpsLLdL8qru/vEk/5HkYUn+rLuPGO3pM0l+YZT930l+v7vvluRnk7x+LH9BkjO7+9Ak70nyw0vb\nX7TpByc5Osldx3ZfulRm7yRvS/LZ7n5+VX1nkucmuV933yXT3VPPWKP+hyV5UpJDkhyb5Hajfm9I\n8rRr8wthVgcleXV3H5Lka0l+OVP7vNvoy/Zb54RxcZfUU5J8abTp5yVZnp5l/yRnj371zCRPXHrv\n5t199yRPT3Jykv816nHY0kHW73T3EZn60HtX1Y8vrf+v3X3nJK9N8qyVlauqfZKckOSo0a6/b1t+\nIexWlvvbryS5U5KvLLWvx2fqu05PckRV7TuWPzLJSVvZ9nr9MLu3ByX5x+6+0+gnT0nyqiQP6+67\nJjkxyfINMleO5a9L8t5M/eyhSR5XVbcYZVb2xU+pqr22st29x7HDKzIdL7yiu++Q6fhxcSzwgEz7\n6SMytf+7VNViBP5tx2ce2t3/sOI7PinJgUkOG/332679r4tdwbhw96dJjktyxyRfGcd3RyR5UlUd\nOIou9v3XOG+paUqjRyb5ibH8qiSPGeX3T3LO+Ls5e4063D3Ja5Ic3d2X7/AvyYY0Lr79TKZ+8acy\ntadFO1vu55a9MckTRzv7dtZpl2P5NfrY7v5QkoPGeVCy5ZhgNT+W5JhMfw+/l+Tr4zPOTfLYa/fN\n2c1s3qcmecbYb692/vLlcezwfzLtuxcOHOs8JMlrl64jrbTvOLd/aqa/A9hsjeueyXRO/CujjT0r\nyR8urfYD3X337n7m+PlHk9y3uxf770X/+rxMxwaLY8MPLt6vqu9J8r4kz+3uD+yM78Yu47ZJXp3k\n3pmuay5fY7xa8NXdz07yje4+vLuPHYtvk+Rl3X1QkoOTPHrMHvasTKPwkuQ5SU7v7iOT3DfJy8d5\n/Osz7csXx7X7dPemdcon0/nRQ7v7Pjv497DbENaxM/2PJO/p7iu7+2uZLpYs3wV/UJJ/6u6LkqS7\nv740BPZ+mYK6o7r7q2PZWZnCuF/Mlilc75nkrWP9y5J8IclitMfpY5tXJvlUpgsgK52T5DlV9awk\ntxpl2f18fuwwkmmHdaskh9Z0J+klmYLeHxvv3z/Jq2u6C/nkJDepacTnT2ZLW3t/ki+v8jn3S3Li\noh1191eW3ntdkk3dvRhufmSm8O2j47Mem7UvPJ/f3f/a3d9M8rdJTh3LN43vwq7l77v73PH6rZn6\nyvuOu44uSXKfbGmPa7lnppsd0t2fzNQWFq4cbTTZ0t4XFs+n2ZTkn7v7U+PnTy6Ve1RNI6E+nqmN\nHrK0/uJu6Auzep96cKa/t88vfT/2LMv97UWZ2snrkzyhqm6QEcqN/f1fJTm6qm6Y6eT2vVvZ9rb0\nw+yeNiV5QE2jy++Z5IeS/HiS08Y+9DlJbrlU/uSl9S5dsQ/9ofHeyr74npmOTdfb7juWXt89U9CS\nJG9fWv7AUdeLMv0NHJQpxE6Sv+vu89f4jvdP8rrF1DUrjiHY/XxPkj/PdEFkU6Z289jR7j6W5IBs\naTcLi/OW38yW85b7Zbph5/yx7n2TLEbIfTvJNUYtLTkk0/Hp0d39jzvma7GLuEeS93b3t7r765n6\nzMp0gfgdKwtX1XckuUl3nzcWLfd5q7XLZPU+NknekuTnxzaPTLLWReYPdfc3uvvfMt38876x3PkP\nC8v71PXOX/5k/HtSrj7K+J1J0t1/k+n44OA1PuekUe7MJDetqpvtmOqzm1jtuue+SX4iybvGvvl1\nSb53aZ13rdjGyeM4daX7ZwqZkyTd/R/j5Y0yjUp6Vnd/cJX12LMs+sLtuca47PIV14VOH6+X97cP\nTPLbY7sfztQGfzjTudBR43z+8UnetJXySXLaUltmFZ5Zx/Vptemq1prC6m8znWgelDFfc3c/paZp\nBx6S5MKquvNWtrccvH0709Rcx2S6M7+T/GJ3n1RV545tvr+qntTdH96O78SuYWVb2DfTTuSnu/vS\nqjouyb3G+5Xkbt39reUNVNXKeZ+3d/q1jya5T1X9/jiJrSSnLt09tficIzIdzHWS52e6E3W5/lct\n/XxV9OO7opVtqTMdhN+5u/+ppqlbbjze++9subHmxtk2y23327l6G1luOyvb1V5VdatMIzzv3N1f\nraoTV3zuYp3N262qv8p00fGC8T1MTbhnW9nf3jjTxeLfzXQ36AXdvQjZ3pHkVzKFbud39zfG8sUI\npadkGhnamcK8lbS1PUR3f27cufxTSV6U5EOZQrh7rLHKWn1dZ+39ZmdqU+tt94oV5Rdqxevju/uP\nllcco6SuWPr5aseka3weu6//SPL3mW5CuCxTu3lad5+2XGhpdF1WnLf8ZVU9eaz35u5+ziqf8Z+L\n8HeN48svJtknU9j3/lXWZ8+x3IddsQ1lNlvtfDrJaqM0F33mmzLdPHZlknd191Vr9Icr+27nP6x0\nRZJsw/lLb8PryjRa6Y2ZRn38Y3c/ZK1yO6T27K4q0/n7l8do4NWs7GfX6nfX8t+ZrpM+KNNMOqmq\nF2c6X+p1Ppfd06L9rHqNcRUr9+fbcr2xMs088rlrbKzqtEwj4R+eZPk6/TXKV9WRufr5kHa7CiPr\n2JnOSHJMTc8Hu2mm6QEXF0KS6cT0+xahW1XdZKTxyTRC7mGZ5mw+ZLx/6+4+v7tfkORfMz3r48wk\nPz/ev32mu6UvW6tC3f3nYyqYw7v7oqr6ke6+vLtflekOmMPWWpdd2monlzdJ8s9jOtblndmpSX5t\n84pVdxgvz1iUG9NdLj8rYbH905I8fjG8e2mqrWSa4uUDSd45Rpecm+QeteV5I/tV1e26+7ylNvq+\n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\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fd4aab7e208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "from matplotlib import pyplot as plt\n",
    "plt.figure(figsize=(30, 30))\n",
    "plt.imshow(cm, cmap='Blues', interpolation='nearest')\n",
    "tick_marks = np.arange(len( sorted_authors ))\n",
    "plt.xticks(tick_marks, sorted_authors )\n",
    "plt.yticks(tick_marks, sorted_authors )\n",
    "plt.ylabel('Actual')\n",
    "plt.xlabel('Predicted')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
